#include "linklist.h"

void revert(list head)
{
    // 1. 将链表切割为两个子链表
    list p = head->next;
    head->next = NULL;

    // 2. 循环逆转
    list k;
    while(p != NULL)
    {
        // 2.1
        k = p->next;
        // 2.2 
        p->next = head->next;
        // 2.3 
        head->next = p;
        p = k;
    }
}

int main(int argc, char const *argv[])
{
    list head = init_list();

    // 往链表中增加n个数据
    int n;
    scanf("%d", &n);

    for(int i=1; i<=n; i++)
    {
        add_list_tail(head, new_node(i));
        show(head);
    }

    // 逆转链表
    revert(head);
    show(head);

    return 0;
}
